﻿using sipfe.model.dataAccess;
using sipfe.model.nuevo;
using sipfe.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace sipfe.service.nuevo
{
    public class ConvocatoriaService
    {
        public string[] AddNuevaSolicitudService_old(string numLineas)
        {
             String[] rpta={};

             return rpta;
        }        

        public SIPMaeConvocatoria findSIPMaeConvocatoriaByIdService(decimal nIdeConvocatoria)
        {
            ConvocatoriaDAO cDAO = new ConvocatoriaDAO();
            return cDAO.findSIPMaeConvocatoriaByIdDAO(nIdeConvocatoria);
        }

        public string[] AddNuevaConvocatoriaService(SIPMaeConvocatoria sipMaeConvocatoria, Dictionary<int, string[]> dictionaryTarifa)
        {
            ConvocatoriaDAO cDAO = new ConvocatoriaDAO();
            return cDAO.AddNuevaConvocatoriaDAO(sipMaeConvocatoria, dictionaryTarifa);
        }

        public List<SIPMaeConvocatoria> ListarConvocatoriaService_old(string fec_IniVig, string fec_FinVig, string ide_Empresa, string n_ClaseTramite)
        {
            ConvocatoriaDAO cDAO = new ConvocatoriaDAO();
           // return cDAO.ListarConvocatoriaDAO(fec_IniVig, fec_FinVig, ide_Empresa, n_ClaseTramite);
            return null;
        }

        public IList<dynamic> ListarConvocatoriaService(string fec_IniVig, string fec_FinVig, string ide_Empresa, string n_ClaseTramite, string n_IdeConvo)
        {
            ConvocatoriaDAO cDAO = new ConvocatoriaDAO();
            return cDAO.ListarConvocatoriaDAO(fec_IniVig, fec_FinVig, ide_Empresa, n_ClaseTramite, n_IdeConvo);
        }

        public IList<dynamic> ListadoSolicitudesService(int nIdeConvo)
        {
            ConvocatoriaDAO cDAO = new ConvocatoriaDAO();
            return cDAO.ListadoSolicitudesDAO(nIdeConvo);
        }

        public int addNuevaConvocatoriaPabeService(string d_FecIniVig, string d_FecFinVig, int n_IdeTipoConvo, int n_IdeEmpresa, int n_IdeClaseSol, 
                                                           string v_Descr, decimal n_MontoBrutoConvo, int n_IdeTipoMoneda, decimal n_PorcParaIpfe, 
                                                            decimal n_PorcParaBeca, decimal n_PorcParaEmpleado, decimal n_PorcParaOperario, 
                                                            decimal n_PorcPrimariaEmple, decimal n_NumBecasPrimariaEmple, decimal n_MontoXBecaPrimariaEmple, 
                                                            decimal n_PorcSecundariaEmple, decimal n_NumBecasSecundariaEmple, decimal n_MontoXBecaSecundariaEmple, 
                                                            decimal n_PorcTecnicaEmple, decimal n_NumBecasTecnicaEmple, decimal n_MontoXBecaTecnicaEmple, 
                                                            decimal n_PorcPrimariaOpera, decimal n_NumBecasPrimariaOpera, decimal n_MontoXBecaPrimariaOpera, 
                                                            decimal n_PorcSecundariaOpera, decimal n_NumBecasSecundariaOpera, decimal n_MontoXBecaSecundariaOpera,
                                                            decimal n_PorcTecnicaOpera, decimal n_NumBecasTecnicaOpera, decimal n_MontoXBecaTecnicaOpera,
                                                            int n_IdeUsuario, decimal n_MontoNetoIpfe, decimal n_MontoNetoConvo, decimal n_MontoBecaEmpleado, 
                                                            decimal n_MontoBecaOperario, decimal n_MontoPrimariaEmple, decimal n_MontoSecundariaEmple, 
                                                            decimal n_MontoTecnicaEmple, decimal n_MontoPrimariaOpera, decimal n_MontoSecundariaOpera,
                                                            decimal n_MontoTecnicaOpera, decimal n_PorcUniEmple, decimal n_MontoUniEmple, decimal n_NumBecasUniEmple, 
                                                            decimal n_MontoXBecaUniEmple, decimal n_PorcUniOpera, decimal n_MontoUniOpera, decimal n_NumBecasUniOpera, 
                                                            decimal n_MontoXBecaUniOpera)
        {
            ConvocatoriaDAO cDAO = new ConvocatoriaDAO();
            SIPMaeConvocatoria convocatoria = new SIPMaeConvocatoria();

            convocatoria.dFecIniVig = UtilitariosUtil.formatearFecha(d_FecIniVig);
            if (!string.IsNullOrEmpty(d_FecFinVig)) convocatoria.dFecFinVig = UtilitariosUtil.formatearFecha(d_FecFinVig);
            convocatoria.nIdeTipoConvo      = n_IdeTipoConvo;
            convocatoria.nIdeEmpresa        = n_IdeEmpresa;
            convocatoria.nIdeClaseSol       = n_IdeClaseSol;
            convocatoria.vDescr             = v_Descr;
            convocatoria.nMontoBrutoConvo   = n_MontoBrutoConvo;
            convocatoria.nIdeTipoMoneda     = n_IdeTipoMoneda;
            convocatoria.nPorcParaIpfe      = n_PorcParaIpfe;
            convocatoria.nPorcParaBeca      = n_PorcParaBeca;
            convocatoria.nPorcParaEmpleado  = n_PorcParaEmpleado;
            convocatoria.nPorcParaOperario  = n_PorcParaOperario;
            convocatoria.nIdeUsuReg         = n_IdeUsuario;
            convocatoria.dtFecReg           = DateTime.Now;
            convocatoria.nMontoNetoIpfe     = n_MontoNetoIpfe;
            convocatoria.nMontoNetoConvo    = n_MontoNetoConvo;

            //item para empleados
            SIPDetConvocatoria detConvocatoria = new SIPDetConvocatoria();
            detConvocatoria.nIdeInstitucion = n_IdeEmpresa;
            detConvocatoria.dFecIniVig = UtilitariosUtil.formatearFecha(d_FecIniVig);
            if (!string.IsNullOrEmpty(d_FecFinVig)) detConvocatoria.dFecFinVig = UtilitariosUtil.formatearFecha(d_FecFinVig);
            detConvocatoria.nIdeUsuReg = n_IdeUsuario;
            detConvocatoria.dtFecReg = DateTime.Now;

            detConvocatoria.nIdeTipoTrab = Constante.TIPO_TRABAJADOR.EMPLEADO;
            detConvocatoria.nMontoBeca = n_MontoBecaEmpleado;
            detConvocatoria.nIdeNivelEstudio = Constante.NIVEL_ESTUDIO.PRIMARIA;
            detConvocatoria.nPorcParaBeca   = n_PorcPrimariaEmple;
            detConvocatoria.nMontoParaBeca  = n_MontoPrimariaEmple;
            detConvocatoria.nNumBecas       = n_NumBecasPrimariaEmple;
            detConvocatoria.nMontoPorBeca   = n_MontoXBecaPrimariaEmple;
            convocatoria.SIPDetConvocatoria.Add(detConvocatoria);

            detConvocatoria = new SIPDetConvocatoria();
            detConvocatoria.nIdeInstitucion = n_IdeEmpresa;
            detConvocatoria.dFecIniVig = UtilitariosUtil.formatearFecha(d_FecIniVig);
            if (!string.IsNullOrEmpty(d_FecFinVig)) detConvocatoria.dFecFinVig = UtilitariosUtil.formatearFecha(d_FecFinVig);
            detConvocatoria.nIdeUsuReg = n_IdeUsuario;
            detConvocatoria.dtFecReg = DateTime.Now;
            detConvocatoria.nIdeTipoTrab        = Constante.TIPO_TRABAJADOR.EMPLEADO;
            detConvocatoria.nMontoBeca = n_MontoBecaEmpleado;
            detConvocatoria.nIdeNivelEstudio    = Constante.NIVEL_ESTUDIO.SECUNDARIA;
            detConvocatoria.nPorcParaBeca       = n_PorcSecundariaEmple;
            detConvocatoria.nMontoParaBeca      = n_MontoSecundariaEmple;
            detConvocatoria.nNumBecas           = n_NumBecasSecundariaEmple;
            detConvocatoria.nMontoPorBeca       = n_MontoXBecaSecundariaEmple;
            convocatoria.SIPDetConvocatoria.Add(detConvocatoria);

            detConvocatoria = new SIPDetConvocatoria();
            detConvocatoria.nIdeInstitucion = n_IdeEmpresa;
            detConvocatoria.dFecIniVig = UtilitariosUtil.formatearFecha(d_FecIniVig);
            if (!string.IsNullOrEmpty(d_FecFinVig)) detConvocatoria.dFecFinVig = UtilitariosUtil.formatearFecha(d_FecFinVig);
            detConvocatoria.nIdeUsuReg = n_IdeUsuario;
            detConvocatoria.dtFecReg = DateTime.Now;
            detConvocatoria.nIdeTipoTrab = Constante.TIPO_TRABAJADOR.EMPLEADO;
            detConvocatoria.nMontoBeca = n_MontoBecaEmpleado;
            detConvocatoria.nIdeNivelEstudio = Constante.NIVEL_ESTUDIO.TECNICO;
            detConvocatoria.nPorcParaBeca = n_PorcTecnicaEmple;
            detConvocatoria.nMontoParaBeca = n_MontoTecnicaEmple;
            detConvocatoria.nNumBecas = n_NumBecasTecnicaEmple;
            detConvocatoria.nMontoPorBeca = n_MontoXBecaTecnicaEmple;
            convocatoria.SIPDetConvocatoria.Add(detConvocatoria);

            ////
            detConvocatoria = new SIPDetConvocatoria();
            detConvocatoria.nIdeInstitucion = n_IdeEmpresa;
            detConvocatoria.dFecIniVig = UtilitariosUtil.formatearFecha(d_FecIniVig);
            if (!string.IsNullOrEmpty(d_FecFinVig)) detConvocatoria.dFecFinVig = UtilitariosUtil.formatearFecha(d_FecFinVig);
            detConvocatoria.nIdeUsuReg = n_IdeUsuario;
            detConvocatoria.dtFecReg = DateTime.Now;
            detConvocatoria.nIdeTipoTrab = Constante.TIPO_TRABAJADOR.EMPLEADO;
            detConvocatoria.nMontoBeca = n_MontoBecaEmpleado;
            detConvocatoria.nIdeNivelEstudio = Constante.NIVEL_ESTUDIO.UNIVERSITARIA;
            detConvocatoria.nPorcParaBeca = n_PorcUniEmple;
            detConvocatoria.nMontoParaBeca = n_MontoUniEmple;
            detConvocatoria.nNumBecas = n_NumBecasUniEmple;
            detConvocatoria.nMontoPorBeca = n_MontoXBecaUniEmple;
            convocatoria.SIPDetConvocatoria.Add(detConvocatoria);

            ////

            detConvocatoria = new SIPDetConvocatoria();
            detConvocatoria.nIdeInstitucion = n_IdeEmpresa;
            detConvocatoria.dFecIniVig = UtilitariosUtil.formatearFecha(d_FecIniVig);
            if (!string.IsNullOrEmpty(d_FecFinVig)) detConvocatoria.dFecFinVig = UtilitariosUtil.formatearFecha(d_FecFinVig);
            detConvocatoria.nIdeUsuReg = n_IdeUsuario;
            detConvocatoria.dtFecReg = DateTime.Now;
            detConvocatoria.nIdeTipoTrab = Constante.TIPO_TRABAJADOR.OPERARIO;
            detConvocatoria.nMontoBeca = n_MontoBecaOperario;
            detConvocatoria.nIdeNivelEstudio = Constante.NIVEL_ESTUDIO.PRIMARIA;
            detConvocatoria.nPorcParaBeca = n_PorcPrimariaOpera;
            detConvocatoria.nMontoParaBeca = n_MontoPrimariaOpera;
            detConvocatoria.nNumBecas = n_NumBecasPrimariaOpera;
            detConvocatoria.nMontoPorBeca = n_MontoXBecaPrimariaOpera;
            convocatoria.SIPDetConvocatoria.Add(detConvocatoria);

            detConvocatoria = new SIPDetConvocatoria();
            detConvocatoria.nIdeInstitucion = n_IdeEmpresa;
            detConvocatoria.dFecIniVig = UtilitariosUtil.formatearFecha(d_FecIniVig);
            if (!string.IsNullOrEmpty(d_FecFinVig)) detConvocatoria.dFecFinVig = UtilitariosUtil.formatearFecha(d_FecFinVig);
            detConvocatoria.nIdeUsuReg = n_IdeUsuario;
            detConvocatoria.dtFecReg = DateTime.Now;
            detConvocatoria.nIdeTipoTrab = Constante.TIPO_TRABAJADOR.OPERARIO;
            detConvocatoria.nMontoBeca = n_MontoBecaOperario;
            detConvocatoria.nIdeNivelEstudio = Constante.NIVEL_ESTUDIO.SECUNDARIA;
            detConvocatoria.nPorcParaBeca = n_PorcSecundariaOpera;
            detConvocatoria.nMontoParaBeca = n_MontoSecundariaOpera;
            detConvocatoria.nNumBecas = n_NumBecasSecundariaOpera;
            detConvocatoria.nMontoPorBeca = n_MontoXBecaSecundariaOpera;
            convocatoria.SIPDetConvocatoria.Add(detConvocatoria);

            detConvocatoria = new SIPDetConvocatoria();
            detConvocatoria.nIdeInstitucion = n_IdeEmpresa;
            detConvocatoria.dFecIniVig = UtilitariosUtil.formatearFecha(d_FecIniVig);
            if (!string.IsNullOrEmpty(d_FecFinVig)) detConvocatoria.dFecFinVig = UtilitariosUtil.formatearFecha(d_FecFinVig);
            detConvocatoria.nIdeUsuReg = n_IdeUsuario;
            detConvocatoria.dtFecReg = DateTime.Now;
            detConvocatoria.nIdeTipoTrab = Constante.TIPO_TRABAJADOR.OPERARIO;
            detConvocatoria.nMontoBeca = n_MontoBecaOperario;
            detConvocatoria.nIdeNivelEstudio = Constante.NIVEL_ESTUDIO.TECNICO;
            detConvocatoria.nPorcParaBeca = n_PorcTecnicaOpera;
            detConvocatoria.nMontoParaBeca = n_MontoTecnicaOpera;
            detConvocatoria.nNumBecas = n_NumBecasTecnicaOpera;
            detConvocatoria.nMontoPorBeca = n_MontoXBecaTecnicaOpera;
            convocatoria.SIPDetConvocatoria.Add(detConvocatoria);

            ///
            detConvocatoria = new SIPDetConvocatoria();
            detConvocatoria.nIdeInstitucion = n_IdeEmpresa;
            detConvocatoria.dFecIniVig = UtilitariosUtil.formatearFecha(d_FecIniVig);
            if (!string.IsNullOrEmpty(d_FecFinVig)) detConvocatoria.dFecFinVig = UtilitariosUtil.formatearFecha(d_FecFinVig);
            detConvocatoria.nIdeUsuReg = n_IdeUsuario;
            detConvocatoria.dtFecReg = DateTime.Now;
            detConvocatoria.nIdeTipoTrab = Constante.TIPO_TRABAJADOR.OPERARIO;
            detConvocatoria.nMontoBeca = n_MontoBecaOperario;
            detConvocatoria.nIdeNivelEstudio = Constante.NIVEL_ESTUDIO.UNIVERSITARIA;
            detConvocatoria.nPorcParaBeca = n_PorcUniOpera;
            detConvocatoria.nMontoParaBeca = n_MontoUniOpera;
            detConvocatoria.nNumBecas = n_NumBecasUniOpera;
            detConvocatoria.nMontoPorBeca = n_MontoXBecaUniOpera;
            convocatoria.SIPDetConvocatoria.Add(detConvocatoria);
            ////

            return cDAO.addNuevaConvocatoriaPabeDAO(convocatoria);

        }
    }
}
